Color look-up tables (LUTs) are used to transform input color signal representations into output color signal representations which can be applied to drive a color display. Such transformations are necessary because color displays commonly have non-linear input to output signal transformation characteristics. Ideally, for a given input value, a LUT generates a corresponding output value that precisely cancels the effects of a display's non-linearity so that colors appearing on the display accurately correspond to the colors defined by the input color signal representations. The LUT may be embedded in a hardware imaging system, or may be implemented via image processing software.
A typical LUT contains representations of different input color signals which are preselected to span the range of input drive signals that may be encountered during normal operation of the display. For each input color signal representation, the LUT also stores either a corresponding output color signal representation or information which can be used to derive a corresponding output color signal representation. As explained below, an input color signal representation is processed by extracting its closest corresponding output color signal representation from the LUT, or by using the information stored in the LUT to derive an output color signal representation which most closely corresponds to the input color signal representation. The extracted or derived output color signal representation is applied to drive the display.
Input color signal representations stored in a LUT can be predefined by sampling test signals representative of the input drive signals that may be encountered during normal operation of the display. Uniform and non-uniform signal sampling techniques are common. Non-uniform sampling can provide improved accuracy in comparison to uniform sampling, but increases cost, complexity, or both. The accuracy improvement is illustrated in FIGS. 1A and 1B, in which the solid lines represent a desired non-linear system response (which is identical in both Figures), the circles represent signal sampling points and the dashed lines represent linear interpolation between the sampling points. FIG. 1A illustrates uniform sampling, i.e. the sampling points are equally horizontally spaced; whereas FIG. 1B illustrates non-uniform sampling, i.e. the sampling points are not equally horizontally spaced.
Interpolation error is proportional to the total area between the solid and dashed lines. The total area between the solid and dashed lines in FIG. 1A is larger than the total area between the solid and dashed lines in FIG. 1B, signifying that, on average, the uniform sampling of FIG. 1A yields a larger interpolation error than the non-uniform sampling of FIG. 1B. It is desirable to minimize such interpolation errors. In general, linear interpolation of a non-linear function using a finite number of appropriately-selected non-uniform sampling points can approximate the sampled function more accurately (i.e. yields a smaller average interpolation error) than linear interpolation of the same function using the same finite number of uniform sampling points.
If a non-uniform sampling technique is used to predefine the input color signal representations stored in an LUT, the non-uniform sample spacing interval may correspond to the inverse of the display system's response characteristic. This is illustrated in FIGS. 2A and 2B, in which the solid lines represent a desired non-linear system response (which is identical in both Figures, and is in this case y=x2 where x and y are the input and output signal values respectively), the circles represent signal sampling points and the dashed lines represent linear interpolation of the sampling points. FIG. 2A illustrates a uniform sampling technique in which the input signal x is uniformly sampled at equally spaced 0.25 unit intervals along the x axis to yield a series of uniformly spaced index values A, [0, 0.25, 0.5, 0.75, 1]. The five y output values circled on the y=x2 system response curve represent the interpolant or coefficient of interpolation for each one of the five corresponding x input values.
FIG. 2B illustrates a non-uniform sampling technique in which the input signal x is non-uniformly sampled in accordance with the inverse system response, i.e. x=y1/2, to yield a series of non-uniformly spaced index values B, [0, 0.5, 0.707, 0.866, 1] which, in this example, are the square roots of the uniformly spaced A index values described above in relation to FIG. 2A. The total area between the solid and dashed lines in FIG. 2A is larger than the total area between the solid and dashed lines in FIG. 2B, again signifying that linear interpolation of a non-linear function using a finite number of non-uniform sampling points can approximate the sampled function more accurately (i.e. can yield a smaller average interpolation error) than linear interpolation of the same function using the same finite number of uniform sampling points.
Uniform sampling facilitates relatively simple and inexpensive linear interpolation operations, i.e. linear interpolation can be performed without performing division operations which are often required to perform linear interpolation of non-uniformly sampled values. However the improved accuracy obtainable by non-uniform sampling may be sufficiently desirable to warrant the added cost and complexity of using a non-uniform sampling technique to predefine the input color signal representations stored in an LUT.
FIG. 3 depicts an LUT 10 for transforming red, green and blue input color signals Rin, Gin, Bin into red, green and blue output color signals Rout, Gout, Bout respectively. LUT 10 may have a one-dimensional (1D), two-dimensional (2D) or three-dimensional (3D) characteristic. A 1D LUT, such as LUT 10A shown in FIG. 4A transforms one input signal X (e.g. one of the aforementioned Rin, Gin or Bin input signals) into a corresponding output signal G(X) (e.g. one of the aforementioned Rout, Gout or Bout output signals). A 3D LUT, such as LUT 10B shown in FIG. 4B transforms three input signals X1,X2,X3 (e.g. the aforementioned Rin, Gin and Bin input signals) into a single corresponding output signal G(X1,X2,X3) (e.g. one of the aforementioned Rout, Gout or Bout output signals).
A typical LUT has a storage component, an interpolation component and a control component. For example, 1D LUT 10A shown in FIG. 4A has a 1D storage component 12A, a 1D interpolation component 14A and a control component 16A. 3D LUT 10B shown in FIG. 4B has a 3D storage component 12B, a 3D interpolation component 14B and a control component 16B. The storage component contains input data samples, which may be predefined as aforesaid using uniform or non-uniform sampling techniques. The interpolation component facilitates interpolation (approximation) as aforesaid between stored data samples if the input signal X or X1,X2,X3 does not match a stored input data sample, to derive an interpolated output value G(X) or G(X1,X2,X3) corresponding to the input signal.
The control component generates indices and coefficients corresponding to the input signal for use by the interpolation component in performing interpolation operations. The indices (i.e. the x axis values described above in relation to FIGS. 2A and 2B) are used to address input data samples stored in the storage component. The coefficients (i.e. the y axis values described above in relation to FIGS. 2A and 2B) define output signal representations corresponding to the respective input data samples.
FIG. 5 depicts a prior art color transformation system incorporating three 1D LUTs, namely R-channel LUT 20, G-channel LUT 22 and B-channel LUT 24. The red channel input signal Rin is applied to LUT 20, the green channel input signal Gin is applied to LUT 22, and the blue channel input signal Bin is applied to LUT 24. R-channel LUT 20 interpolates as aforesaid to produce a red channel output signal RLUTout utilizing indices and coefficients which are extracted or derived based on the red channel input signal Rin. G-channel LUT 22 and B-channel LUT 24 similarly interpolate to produce green and blue channel output signals GLUTout and BLUTout respectively, utilizing indices and coefficients which are extracted or derived based on the green and blue channel input signals Gin and Bin respectively. The three output signals RLUTout, GLUTout, BLUTout are used to drive a display device.
FIG. 6 depicts a prior art color transformation system incorporating three 3D LUTs, namely R channel LUT 26, G channel LUT 28 and B channel LUT 30. All three of the red, green and blue channel input signals Rin, Gin, Bin are applied to each one of 3D LUTs 26, 28 and 30. R channel LUT 26 interpolates as aforesaid to produce a red channel output signal RLUTout utilizing indices and coefficients which are extracted or derived based on all three of the red, green and blue channel input signals Rin, Gin and Bin. G channel LUT 28 and B channel LUT 30 similarly interpolate to produce green and blue channel output signals GLUTout and BLUTout respectively, in both cases utilizing indices and coefficients which are extracted or derived based on all three of the red, green and blue channel input signals Rin, Gin and Bin. The three output signals RLUTout, GLUTout, BLUTout are used to drive a display device.
If an LUT's stored input data samples are uniformly spaced then linear interpolation is typically performed by looking up, in the storage component, the two data samples which are most nearly equal to the input signal value, i.e. the two stored data samples corresponding to lower and upper nodes of an interval that bounds the input value. If the input value exactly matches one of the two node values, or if the function which defines the distribution of stored data samples is precisely linear between the two node values, then the interpolation operation will produce an output value which exactly matches the input value. However, if the input value does not exactly match one of the two node values and the function which defines the distribution of stored data samples is non-linear between the two node values, then the interpolation operation will not produce an output value which exactly matches the input value but will generally produce an output value characterized by an approximation error.
This is illustrated by FIGS. 7A-7D which depict a prior art 1D LUT generation technique for a display system having independent R, G and B channels. The system's R, G and B channel responses are respectively represented as SR({dot over ( )}), SG({dot over ( )}) and SB({dot over ( )}) with VR({dot over ( )}) VG({dot over ( )}) and VB({dot over ( )}) respectively representing the system's inverse R, G and B channel responses. For example, in FIG. 7A the dashed line labeled SR({dot over ( )}) represents the display system's red channel response. Rin′ represents a test red channel input signal applied to the system and Rout′ represents the display system's red channel response to the applied Rin′ test signal. In FIG. 7B, the dashed line labeled VR({dot over ( )}) represents the inverse of the SR({dot over ( )}) response.
The R channel's inverse response VR({dot over ( )}) is used to construct the 1D R_LUT shown in FIG. 7D. To accomplish this, the display system's R channel response is first characterized by sampling the Rout′ signal at five uniformly spaced intervals, each corresponding to a different Rin′ test signal value, as indicated by the five circles shown in FIG. 7A. The five sampled Rout′ signal values define the coefficients, and the corresponding Rin′ test signal values define the indices for the 1D R_LUT. As seen in FIG. 7B, the coefficients (again represented by five circles) are non-uniformly spaced with respect to the Rout′ axis. Linear interpolation based on five uniformly spaced samples of the FIG. 7B Rout′ signal (as indicated by the five squares in FIG. 7B) yields a VR′({dot over ( )}) characteristic represented by the thick solid line shown in FIG. 7B, which deviates significantly from the desired inverse response VR({dot over ( )}) of the R channel. Consequently, significant undesirable approximation errors will result if an R_LUT generated as above is applied to the display system.
The LUT can be improved in various ways. One improvement technique is to increase the number of uniformly separated sampling points used to construct the LUT, but this increases complexity and storage requirements. A second technique is to construct the LUT using non-uniformly separated sampling points as explained above, e.g. using non-uniform Rin′ sample spacings corresponding to the inverse channel response, but this requires prior knowledge of the channel response characteristic. A third technique is to use non-uniformly separated sampling points for the LUT index, or to apply the inverse channel response to the LUT index, but this requires computation of the inverse channel response, which can be very complex in some cases.
FIG. 8A schematically illustrates generation of a 3D LUT, labeled R_LUT, which in this example is used to transform R channel signals. FIG. 8B illustrates application of the generated R_LUT to transform red channel signals, together with application of two other 3D LUTs labeled G_LUT and B_LUT which are used to transform G and B channel signals respectively. As shown in FIG. 8B, each one of the Rout, Gout, and Bout output channels is derived utilizing all three of the Rin, Gin and Bin input channels, as indicated for the Rin channel by heavy solid lines in FIGS. 8A and 8B. The FIG. 8A 3D LUT is generated using coefficients formed by the Rout′, Gout′ and Bout′ signals as inputs and using the corresponding Rin′ values as outputs. System measurements of the Rout′, Gout′, and Bout′ values form the inputs of the LUT response, and the corresponding Rin′ value forms the output of the LUT response. Usually, trilinear interpolation is used to interpolate the 3D LUT. The 3D LUTs provide VR—3D, VG—3D, and VB —3D response characteristics for the R, G and B channels respectively. Non-linear sample space in Rout′, Gout′, and Bout′ based on the inverse system response also improves the LUT accuracy. However, it is more challenging to compute the inverse system response for a 3D system.
FIG. 9 is a flow chart in which the left column depicts an LUT generation procedure and the right column depicts a corresponding lookup procedure for use in applying the generated LUT to a particular display system. With reference to the left column, a series of Rin′, Gin′, Bin′ test input signals selected to represent the full range of the system's R, G, and B display capability are applied to the system (FIG. 9, block 910). The display's optical output response to each input test signal is measured using a device such as a spectral analyzer (FIG. 9, block 920). Such devices typically output either XYZ tristimulus values or spectral values. If spectral values are output then they are converted to XYZ tristimulus values using a suitable color matching function. The XYZ tristimulus values corresponding to the maximum R, G and B channels are used to derive an XYZ-to-RGB conversion matrix which is applied (FIG. 9, block 930) to convert the measured XYZ tristimulus values into Rout′, Gout′, and Bout′ outputs corresponding to the previously applied Rin′, Gin′, Bin′ test input signal. The LUT is then generated (FIG. 9, block 940) as described above in relation to FIGS. 7A-7D in the case of a 1D LUT, or FIGS. 8A-8B in the case of a 3D LUT. If non-uniform sampling is used to improve the LUT's accuracy, then the inverse system response is computed to form the LUT index values as previously described.
The right column of FIG. 9 depicts performance of an LUT lookup operation for a received (FIG. 9, block 950) input signal having Rin, Gin, and Bin components. The LUT indices corresponding to each of the received Rin, Gin, and Bin signal components are determined, and the corresponding coefficients are either extracted from the LUT's storage or generated as previously explained (FIG. 9, block 960). The indices and coefficients are then applied (FIG. 9, block 970) to interpolate RLUTout, GLUTout, BLUTout values based on the two interpolants closest to the respective Rin, Gin, and Bin signal components. Usually, linear interpolation is used in the 1D case and trilinear interpolation is used in the 3D case. The dotted line in FIG. 9 shows how the LUT indices and coefficients are generated. The RLUTout, GLUTout, BLUTout are then applied to the display (FIG. 9, block 980). Ideally, the display system's non-linear response characteristic is cancelled out by the LUT.
The non-linear nature of the transformation effected by a LUT, coupled with the increased need for interpolation in performing 3D LUT look-ups and the increased error magnitude of such interpolation, gives rise to a need for error reduction in the performance of LUT interpolation operations. This disclosure addresses that need.